package aterrizar;

import java.util.Date;

import aterrizar.exceptions.AnticipacionInvalidaException;
import aterrizar.exceptions.AsientoNoDisponibleException;
import aterrizar.exceptions.PasajeInvalidoException;

public class Pasaje {

	Vuelo vuelo;
	Pasajero pasajero;
	Asiento asiento;
	Reserva reserva;
	Date diaInicial;
	
	public Pasaje(Vuelo vuelo, Pasajero pasajero, Asiento asiento) {
		super();
		this.vuelo = vuelo;
		this.pasajero = pasajero;
		this.asiento = asiento;
	}
	
	public Pasaje(Reserva reserva) {
		super();
		this.reserva = reserva;
		this.vuelo = reserva.getVuelo();
		this.pasajero = reserva.getPasajero();
		this.asiento = reserva.getAsiento();
		this.diaInicial = reserva.getDiaReserva();
	}
	
	public void comprar() throws AsientoNoDisponibleException{
		asiento.comprar(reserva);
	}
	
	public double getCosto() throws PasajeInvalidoException
	{
		Date dia = ( diaInicial == null ? new Date() : diaInicial );
		Anticipacion anticipacion;
		try {
			anticipacion = new Anticipacion(dia, vuelo.getFechaPartida());
		} catch (AnticipacionInvalidaException e) {
			throw new PasajeInvalidoException("La compra no puede ser posterior al vuelo.");
		}

		return vuelo.getPrecio(asiento.getClase(),anticipacion);
	}

}
